package enzymy_wydajnosc_reakcji.kontroler;

import enzymy_wydajnosc_reakcji.model.Reaction;
import enzymy_wydajnosc_reakcji.model.ReactionTableModel;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;

/**
 * Stowrzone przez
 * User: Davvid
 * Date: 01.11.13
 * Time: 17:58
 */
public class Presenter {
    private JLabel wynikMagLB;
    private JLabel wynikDagLB;
    private JTextField masaNaczynkaTF;
    private JTextField masaMagTF;
    private JTextField masaDagTF;
    private JTextField masaKwasuTF;
    private JButton zapiszBT;
    private JButton usunBT;
    private JTable table;

    class SluchaczPrzyciskuObliczBT implements ActionListener {
        DecimalFormat df = new DecimalFormat("0.00");

        @Override
        public void actionPerformed(ActionEvent e) {
            if (!masaNaczynkaTF.getText().isEmpty() &&
                    !masaMagTF.getText().isEmpty() &&
                    !masaDagTF.getText().isEmpty() &&
                    !masaKwasuTF.getText().isEmpty()) {
                try {
                    double masaNaczynkaDB = (Double.parseDouble(masaNaczynkaTF.getText().replace(',', '.')));
                    double masaMagDB = (Double.parseDouble(masaMagTF.getText().replace(',', '.'))) - masaNaczynkaDB;
                    double masaDagDB = (Double.parseDouble(masaDagTF.getText().replace(',', '.'))) - masaNaczynkaDB;
                    double masaKwasuDB = (Double.parseDouble(masaKwasuTF.getText().replace(',', '.'))) - masaNaczynkaDB;

                    double sumaMasDB = masaMagDB + masaDagDB + masaKwasuDB;

                    if(sumaMasDB == 0){
                        wynikMagLB.setText("0 %");
                        wynikDagLB.setText("0 %");
                        return;
                    }

                    double wydajnoscMagDB = ((masaMagDB * 0.791) / sumaMasDB) * 100;
                    double wydajnoscDagDB = ((masaDagDB * 0.942) / sumaMasDB) * 100;

                    wynikMagLB.setText(df.format(wydajnoscMagDB) + " %");
                    wynikDagLB.setText(df.format(wydajnoscDagDB) + " %");
                } catch (NumberFormatException e1) {
                    JOptionPane.showMessageDialog(null, "Wpisałeś złą wartość", "Informacja", JOptionPane.INFORMATION_MESSAGE);
                }
            }
        }
    }

    class SluchaczPrzyciskuZapiszBT implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            String wydajnoscMagST = wynikMagLB.getText();
            String wydajnoscDagST = wynikDagLB.getText();

            Reaction reakcja = new Reaction(wydajnoscMagST, wydajnoscDagST);

            ReactionTableModel reactionTableModel = (ReactionTableModel) table.getModel();
            reactionTableModel.dodajWyniki(reakcja);
        }
    }

    public void setWynikMagLB(JLabel wynikMagLB) {
        this.wynikMagLB = wynikMagLB;
    }

    public void setWynikDagLB(JLabel wynikDagLB) {
        this.wynikDagLB = wynikDagLB;
    }

    public void setMasaNaczynkaTF(JTextField masaNaczynkaTF) {
        this.masaNaczynkaTF = masaNaczynkaTF;
    }

    public void setMasaMagTF(JTextField masaMagTF) {
        this.masaMagTF = masaMagTF;
    }

    public void setMasaDagTF(JTextField masaDagTF) {
        this.masaDagTF = masaDagTF;
    }

    public void setMasaKwasuTF(JTextField masaKwasuTF) {
        this.masaKwasuTF = masaKwasuTF;
    }

    public void setObliczBT(JButton obliczBT) {
        JButton obliczBT1 = obliczBT;
        obliczBT1.addActionListener(new SluchaczPrzyciskuObliczBT());
    }

    public void setZapiszBT(JButton zapiszBT) {
        this.zapiszBT = zapiszBT;
        this.zapiszBT.addActionListener(new SluchaczPrzyciskuZapiszBT());
    }

    public void setUsunBT(JButton usunBT) {
        this.usunBT = usunBT;
    }

    public void setTable(JTable table) {
        this.table = table;
    }
}
